package algorithm.leetcode.simple;

/*
 给定一个二叉树和一个目标和，判断该树中是否存在根节点到叶子节点的路径，这条路径上所有节点值相加等于目标和。
 */

/**
 * @author jack.wu
 * @version 1.0
 * @date 2020/10/13
 */
public class Question112 {

    public static void main(String[] args) {


    }

    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) {
            // 空树
            return false;
        }
        if (root.left == null && root.right == null) {
            // 只有根结点
            return root.val == sum;
        }
        // 遍历左子树或者右子树
        return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
    }

    private static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
}
